home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (PO) / Nibble Volume 07, No. 05 (1986-05)(MicroSPARC)(Side A).zip / Nibble Volume 07, No. 05 (1986-05)(MicroSPARC)(Side A).po / GALE.DEMO.bas < prev    next >
BASIC Source File  |  1996-12-24  |  41KB  |  744 lines

  1. 10  REM   COPYRIGHT (C) 1984 BY MICROSPARC, INC. 45 WINTHROP ST., CONCORD, MA.  01742    
  2. 15  TEXT : HOME : CLEAR 
  3. 20  IF  PEEK( -1101) = 6  THEN PR = 1: GOTO 35
  4. 25  VTAB 7: HTAB 1: PRINT "CAN YOUR COMPUTER READ LOWER CASE? ";: GET AN$: HOME 
  5. 30  IF AN$ = "Y"  THEN PR = 1
  6. 35 ZZ = 6:SP = 50:D$ =  CHR$(4)
  7. 40  REM  
  8. 45  REM  SCREEN DEMONSTRATION OF
  9. 50  REM 
  10. 55  REM          "GALE"
  11. 60  REM   BY SANDY M. MOSSBERG
  12. 65  REM  
  13. 70  REM WRITTEN BY PAUL RAYMER, LAS VEGAS NV
  14. 75  REM  REV 8.29.84
  15. 80  FOR X = 1 TO 40:L$ = L$ +"-": NEXT X:Q$ =  CHR$(34)
  16. 85  GOTO 3215
  17. 90  HOME : REM ===SCREEN BUILD
  18. 95  GOTO 125: REM ==NOISE==
  19. 100 NZ =  INT(4 * RND(1))
  20. 105  FOR NO = 1 TO NZ:ZN =  PEEK( -16336): NEXT NO
  21. 110  RETURN 
  22. 115  FOR NO = 1 TO 11:ZN =  PEEK( -16336): NEXT NO: RETURN 
  23. 120 ZN =  PEEK( -16336) +ZN =  PEEK( -16336): RETURN 
  24. 125  VTAB 1: HTAB 12: PRINT "GALE LINE EDITOR"
  25. 130  VTAB 3: HTAB 4: PRINT "MODE:";: HTAB 26: PRINT "CHARS:"
  26. 135  VTAB 5: HTAB 1: PRINT L$: VTAB 15: HTAB 1: PRINT L$
  27. 140  RETURN 
  28. 145  GOSUB 90
  29. 150  IF PR  THEN 260: REM ==CTL-A CASE TOGGLE=====
  30. 155  VTAB 7: HTAB 1: PRINT "100  PRINT ";Q$;"DO YOU COME HERE OFTEN? ";Q$
  31. 160  POKE 1797,80: VTAB 3: HTAB 33: PRINT "34"
  32. 165  VTAB 18: HTAB 1: PRINT "CTL-A PERMITS YOU TO SHIFT BETWEEN      CAPITALS AND LOWER CASE LETTERS"
  33. 170  PRINT : PRINT "IF YOU ";: INVERSE : PRINT "CAN";: NORMAL : PRINT " TYPE LOWER CASE!": PRINT "(THIS COMMAND OMITTED FROM //E VERSION)": GOTO 185
  34. 175  VTAB 18: HTAB 1: PRINT "CTL-A permits you to shift between      capitals and lower case letters"
  35. 180  PRINT : PRINT "If you CAN type lower case!"
  36. 185  GOSUB 3145
  37. 190  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-A COMMAND..."
  38. 195  VTAB 20: HTAB 1: PRINT "Note ";Q$;"L";Q$;" in ";: INVERSE : PRINT "LINE";: NORMAL : PRINT " indicates lower case"
  39. 200  VTAB 3: HTAB 10: PRINT "LOW CASE": POKE 1040,12: GOSUB 3145
  40. 205  VTAB 20: HTAB 1: PRINT "Left and RIGHT arrows select position  "
  41. 210  VTAB 3: HTAB 10: PRINT "--->     ": POKE 1797,208
  42. 215 G$ = "do you come here often?"
  43. 220  FOR X = 1 TO 23: VTAB 7: HTAB 12 +X: PRINT  MID$ (G$,X,1): GOSUB 100: GOSUB 3595: NEXT X
  44. 225  VTAB 3: HTAB 10: PRINT "UP CASE ": POKE 1040,204: GOSUB 3145:G$ = "DO YOU COME HERE OFTEN?"
  45. 230  VTAB 3: HTAB 10: PRINT "<---     "
  46. 235  VTAB 20: HTAB 1: PRINT "LEFT and right arrows select position"
  47. 240  FOR X = 23 TO 1  STEP  -1: VTAB 7: HTAB 12 +X: PRINT  MID$ (G$,X,1): GOSUB 100: GOSUB 3595: NEXT X
  48. 245  VTAB 3: HTAB 10: PRINT "DONE"
  49. 250  POKE 1830,60: GOSUB 3145
  50. 255  REM CTL-D DELETE
  51. 260  GOSUB 90
  52. 265  VTAB 7: HTAB 1: PRINT "100  PRINT ";Q$;"PROGRAMMMING CAN BE FUN! ";Q$
  53. 270  POKE 1797,80: VTAB 3: HTAB 33: PRINT "30": IF PR  THEN 280
  54. 275  VTAB 18: HTAB 1: PRINT "CTL-D ALLOWS YOU TO ";: INVERSE : PRINT "DELETE";: NORMAL : PRINT " A CHARACTER  REGARDLESS OF ITS LOCATION": GOTO 285
  55. 280  VTAB 18: HTAB 1: PRINT "CTL-D allows you to delete a character  regardless of its location"
  56. 285  GOSUB 3145
  57. 290  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-D COMMAND..."
  58. 295  VTAB 20: HTAB 1:LK$ = "Left and Right arrows control cursor": GOSUB 3700
  59. 300  VTAB 22: HTAB 1:LK$ = "Locate character": GOSUB 3700
  60. 305  VTAB 3: HTAB 10: PRINT "--->     ": POKE 1797,208
  61. 310  FOR X = 1798 TO 1811: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3600: POKE X, PEEK(X) +128: NEXT X
  62. 315  POKE 1812,77: GOSUB 3610
  63. 320  VTAB 7: HTAB 21: CALL  -868: PRINT "ING CAN BE FUN! ";Q$
  64. 325  VTAB 3: HTAB 10: PRINT "DELETE [M]"
  65. 330  VTAB 3: HTAB 33: PRINT "29": IF PR  THEN 340
  66. 335  VTAB 20: HTAB 1: CALL  -958: PRINT "PRESSING CTL-D ";: INVERSE : PRINT "DELETES";: NORMAL : PRINT " the letter": GOTO 345
  67. 340  VTAB 20: HTAB 1: CALL  -958: PRINT "Pressing CTL-D (or the ";Q$;"DELETE";Q$;" key on  the Apple //e) DELETES the letter"
  68. 345  GOSUB 3145
  69. 350  VTAB 3: HTAB 10: PRINT "DONE       ": POKE 1830,60
  70. 355  GOSUB 3145
  71. 360  REM =====CTL-E END OF LINE=====
  72. 365  GOSUB 90
  73. 370  VTAB 7: HTAB 1: PRINT "100  PRINT ";Q$;"TAKE THE BUS";Q$
  74. 375  POKE 1797,80: VTAB 3: HTAB 33: PRINT "22"
  75. 380  IF PR  THEN 390
  76. 385  VTAB 18: HTAB 1: PRINT "CTL-E LETS YOU GET TO THE ";: INVERSE : PRINT "END";: NORMAL : PRINT " OF THE    LINE ";: INVERSE : PRINT "INSTANTLY";: NORMAL : PRINT " FOR FASTER EDITING": GOTO 395
  77. 390  VTAB 18: HTAB 1: PRINT "CTL-E lets you get to the end of the    line INSTANTLY for faster editing"
  78. 395  GOSUB 3145
  79. 400  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-E COMMAND..."
  80. 405  IF PR  THEN 420
  81. 410  VTAB 20: HTAB 1: PRINT "MOVES CURSOR TO END OF LINE INSTANTLY"
  82. 415  VTAB 22: HTAB 1: PRINT "(SPEED GREATLY REDUCED FOR THIS DEMO)": GOTO 430
  83. 420  VTAB 20: HTAB 1: PRINT "Moves cursor to end of line instantly"
  84. 425  VTAB 22: HTAB 1: PRINT "(Speed GREATLY reduced for demo only)"
  85. 430  VTAB 3: HTAB 10: PRINT "LINE END ": POKE 1797,208
  86. 435  FOR X = 1798 TO 1816: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3600: POKE X, PEEK(X) +128: NEXT X
  87. 440  POKE 1818,60: GOSUB 3145
  88. 445  VTAB 3: HTAB 10: PRINT "DONE       "
  89. 450  REM ====CTL-F FIND====
  90. 455  GOSUB 90
  91. 460  VTAB 7: HTAB 1: PRINT "100  PRINT ";Q$;"SEEK THE TREASURE";Q$
  92. 465  POKE 1797,80: VTAB 3: HTAB 33: PRINT "27": IF PR  THEN 475
  93. 470  VTAB 18: HTAB 1: PRINT "CTL-F PERMITS YOU TO ";: INVERSE : PRINT "FIND";: NORMAL : PRINT " ANY CHARACTER EVERY TIME IT APPEARS IN A PROGRAM LINE": GOTO 480
  94. 475  VTAB 18: HTAB 1: PRINT "CTL-F permits you to find any character EVERY time it appears in a program line"
  95. 480  GOSUB 3145
  96. 485  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-F COMMAND...": IF PR  THEN 500
  97. 490  VTAB 20: HTAB 1: PRINT "SELECT ANY CHARACTER.  CURSOR WILL STOP ON EACH OCCURRENCE OF THAT CHARACTER"
  98. 495  VTAB 23: HTAB 1: PRINT "(SPEED GREATLY REDUCED FOR THIS DEMO)": GOTO 510
  99. 500  VTAB 20: HTAB 1: PRINT "Select any character.  Cursor will STOP on each occurrence of that character"
  100. 505  VTAB 23: HTAB 1: PRINT "(Speed GREATLY reduced for this demo)"
  101. 510  VTAB 3: HTAB 10: PRINT "FIND [ ]": POKE 1797,208: GOSUB 3145
  102. 515  IF FLAG = 1  THEN LS$ = "E": GOTO 540
  103. 520  VTAB 23: HTAB 1: CALL  -868: PRINT  CHR$(7);"SELECT A LETTER IN SENTENCE ABOVE ";: GET LS$: IF LS$ <"0"  OR LS$ >"Z"  THEN 520
  104. 525  IF PR  THEN 535
  105. 530  VTAB 23: HTAB 1: CALL  -868: PRINT Q$;"FIND";Q$;" LETTER ";Q$;LS$;Q$: GOTO 540
  106. 535  VTAB 23: HTAB 1: CALL  -868: PRINT Q$;"Find";Q$;" letter ";Q$;LS$;Q$
  107. 540  POKE 1295, ASC(LS$)
  108. 545  FOR X = 1798 TO 1820: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3600
  109. 550  IF  PEEK(X) =  ASC(LS$)  THEN  POKE X, PEEK(X) -64: GOSUB 115: GOSUB 3610: GOTO 560
  110. 555  POKE X, PEEK(X) +128
  111. 560  NEXT X
  112. 565  POKE 1823,60: GOSUB 3145
  113. 570  VTAB 3: HTAB 10: PRINT "DONE    "
  114. 575  REM CTL-I INSERT
  115. 580  GOSUB 90
  116. 585  VTAB 7: HTAB 1: PRINT "100  W$ = ";Q$;"PUT A DOG IN THE BUN";Q$
  117. 590  POKE 1797,87: VTAB 3: HTAB 33: PRINT "28": IF PR  THEN 600
  118. 595  VTAB 18: HTAB 1: PRINT "CTL-I ALLOWS ";: INVERSE : PRINT "INSERT";: NORMAL : PRINT "ING OF A LETTER OR   GROUP OF CHARACTERS IN A PROGRAM LINE": GOTO 605
  119. 600  VTAB 18: HTAB 1: PRINT "CTL-I allows inserting of a letter or   group of characters in a program line"
  120. 605  GOSUB 3145
  121. 610  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-I COMMAND..."
  122. 615  VTAB 20: HTAB 1:LK$ = "Arrow keys will locate position for the insertion of characters": GOSUB 3700
  123. 620  VTAB 23: HTAB 1:LK$ = "(Speed GREATLY reduced for this demo)": GOSUB 3700
  124. 625  VTAB 3: HTAB 10: PRINT "INSERT [ ]": POKE 1797,215: GOSUB 3145
  125. 630 J$ = " HOT":A$ = " DOG IN THE BUN": IF PR  THEN 640
  126. 635  VTAB 23: HTAB 1: CALL  -868: FOR X = 1 TO 4: VTAB 23: HTAB 1: PRINT Q$;"INSERT";Q$;" LETTER ";Q$; MID$ (J$,1,X);Q$: VTAB 3: HTAB 18: PRINT  MID$ (J$,X,1);: VTAB 7: HTAB 17: PRINT  MID$ (J$,1,X) +A$: POKE 1823 +X,162: GOSUB 115: VTAB 3: HTAB 33: PRINT 28 +X: GOSUB 3615: NEXT X: GOTO 645
  127. 640  VTAB 23: HTAB 1: CALL  -868: FOR X = 1 TO 4: VTAB 23: HTAB 1: PRINT Q$;"Insert";Q$;" letter ";Q$; MID$ (J$,1,X);Q$: VTAB 3: HTAB 18: PRINT  MID$ (J$,X,1);: VTAB 7: HTAB 17: PRINT  MID$ (J$,1,X) +A$: POKE 1823 +X,162: GOSUB 115: VTAB 3: HTAB 33: PRINT 28 +X: GOSUB 3615: NEXT X
  128. 645  GOSUB 3145
  129. 650  VTAB 3: HTAB 10: PRINT "DONE      ": POKE 1829,60
  130. 655  GOSUB 3145
  131. 660  REM ====CTL-K KILL====
  132. 665  GOSUB 90
  133. 670 A$ = "PI = 3.1415926535897932"
  134. 675  VTAB 7: HTAB 1: PRINT "100  ";A$
  135. 680  POKE 1797,80: VTAB 3: HTAB 33: PRINT "24": IF PR  THEN 690
  136. 685  VTAB 18: HTAB 1: PRINT "CTL-K STOPS EDITING, ";Q$;: INVERSE : PRINT "KILL";: NORMAL : PRINT "S";Q$;" CHANGES    AND RETURNS LINE TO ORIGINAL WORDING": GOTO 695
  137. 690  VTAB 18: HTAB 1: PRINT "CTL-K stops editing, ";Q$;"KILLS";Q$;" changes    and returns line to original wording"
  138. 695  GOSUB 3145
  139. 700  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-K COMMAND...  (CTL-" CHR$(92)" ON THE //E)"
  140. 705  VTAB 20: HTAB 1:LK$ = "A character is changed...": GOSUB 3700
  141. 710 R =  INT(10 * RND(1))
  142. 715  VTAB 3: HTAB 10: PRINT "--->     ": POKE 1797,208
  143. 720  FOR X = 1798 TO 1806 +R: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3600: POKE X, PEEK(X) +128: NEXT X: IF PR  THEN 730
  144. 725  VTAB 20: HTAB 1: PRINT "YOU DECIDE ";: INVERSE : PRINT "NOT";: NORMAL : PRINT " TO CHANGE ";: INVERSE : PRINT "THAT";: NORMAL : PRINT " NUMBER...": GOTO 735
  145. 730  VTAB 20: HTAB 1: PRINT "You decide NOT to change THAT number..."
  146. 735  VTAB 3: HTAB 10: PRINT "TYPE [ ] "
  147. 740  POKE 1295,R +176: POKE 1806 +R,48 +R
  148. 745  GOSUB 3145
  149. 750  VTAB 3: HTAB 10: PRINT "KILL     ": VTAB 7: HTAB 1: PRINT "100 ";A$;"\": GOSUB 115
  150. 755  VTAB 20: HTAB 1:LK$ = "Your line is restored to original copy": GOSUB 3700
  151. 760  GOSUB 3145
  152. 765  REM =CTL-O OVERIDE=
  153. 770  GOSUB 90
  154. 775  VTAB 7: HTAB 1: PRINT "100  REM   THE PRESIDENT'S VETO"
  155. 780  POKE 1797,82: VTAB 3: HTAB 33: PRINT "27"
  156. 785  IF PR  THEN 795
  157. 790  VTAB 18: HTAB 1: PRINT "CTL-O ALLOWS INSERTING OF A CONTROL     CHARACTER (USING ";Q$;: INVERSE : PRINT "OVERIDE";: NORMAL : PRINT " COMMAND";Q$;")": GOTO 800
  158. 795  VTAB 18: HTAB 1: PRINT "CTL-O allows inserting of a CONTROL     character (Using ";Q$;"overide command";Q$;")"
  159. 800  GOSUB 3145
  160. 805  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-O COMMAND..."
  161. 810  IF PR  THEN 820
  162. 815  VTAB 20: HTAB 1: PRINT "USE ARROW KEYS TO LOCATE POSITION FOR   THE INSERTION OF CONTROL CHARACTER": GOTO 825
  163. 820  VTAB 20: HTAB 1: PRINT "Use arrow keys to locate position for   the insertion of control character"
  164. 825  VTAB 3: HTAB 10: PRINT "--->     ": POKE 1797,82
  165. 830  GOSUB 3145
  166. 835  POKE 1797,210: FOR X = 1798 TO 1801: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3605: POKE X, PEEK(X) +128: NEXT X: POKE 1801,32
  167. 840  GOSUB 3145
  168. 845  VTAB 20: HTAB 1:LK$ = "Pressing CTL-O plus any CTL letter --   let's use CTL-M (RETURN) -- inserts     the control character": GOSUB 3700
  169. 850  VTAB 3: HTAB 10: PRINT "CTL ENTRY [ ]"
  170. 855  GOSUB 3145
  171. 860  POKE 1300,13: POKE 1801,13: POKE 1313,184: GOSUB 115
  172. 865  GOSUB 3145
  173. 870  VTAB 3: HTAB 10: PRINT "DONE         ": POKE 1824,60: GOSUB 3145
  174. 875  REM ====CTL-Q QUIT====
  175. 880  GOSUB 90
  176. 885  VTAB 7: HTAB 1: PRINT "100  A$ = ";Q$;"QUIT";Q$": REM THE END."
  177. 890  POKE 1797,65: VTAB 3: HTAB 33: PRINT "30"
  178. 895  IF PR  THEN 905
  179. 900  VTAB 18: HTAB 1: PRINT "CTL-Q PERMITS DELETING OF ALL CHARACTERS";: INVERSE : PRINT "AFTER";: NORMAL : PRINT " CURSOR, TO ";: INVERSE : PRINT "QUIT";: NORMAL : PRINT " LINE EDITING": GOTO 910
  180. 905  VTAB 18: HTAB 1: PRINT "CTL-Q permits deleting of all charactersAFTER cursor, to QUIT line editing"
  181. 910  GOSUB 3145
  182. 915  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-Q COMMAND..."
  183. 920  VTAB 20: HTAB 1:LK$ = "Use arrow keys to locate position for   placement of cursor": GOSUB 3700
  184. 925  VTAB 3: HTAB 10: PRINT "--->"
  185. 930  GOSUB 3145
  186. 935  POKE 1797,193: FOR X = 1798 TO 1808: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3605: POKE X, PEEK(X) +128: NEXT X: POKE 1808,32
  187. 940  IF PR  THEN 950
  188. 945  VTAB 20: HTAB 1: CALL  -958: PRINT "CTL-Q WILL DELETE EVERYTHING ";: INVERSE : PRINT "AFTER";: NORMAL : PRINT " THE  CURSOR": GOTO 955
  189. 950  VTAB 20: HTAB 1: CALL  -958: PRINT "CTL-Q will delete everything AFTER the  cursor"
  190. 955  GOSUB 3145
  191. 960  VTAB 7: HTAB 1: CALL  -868: PRINT "100  A$ = ";Q$;"QUIT"Q$: GOSUB 115
  192. 965  VTAB 3: HTAB 33: PRINT "12"
  193. 970  VTAB 3: HTAB 10: PRINT "DONE"
  194. 975  POKE 1313,179: POKE 1810,60
  195. 980  GOSUB 3145
  196. 985  REM =CTL-R RESTORE=
  197. 990  GOSUB 90
  198. 995 A$ = "ROBIN HOOD AND HIS MERRY MEN"
  199. 1000  VTAB 7: HTAB 1: PRINT "100  A$ = ";Q$;A$;Q$
  200. 1005  POKE 1797,65: VTAB 3: HTAB 33: PRINT "36"
  201. 1010  IF PR  THEN 1020
  202. 1015  VTAB 18: HTAB 1: PRINT "CTL-R ";Q$;: INVERSE : PRINT "RESTORE";: NORMAL : PRINT "S";Q$;" LINE TO ORIGINAL       VERSION, CURSOR TO START OF LINE": GOTO 1025
  203. 1020  VTAB 18: HTAB 1: PRINT "CTL-R ";Q$;"RESTORES";Q$;" line to original       version, cursor to start of line"
  204. 1025  GOSUB 3145
  205. 1030  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-R COMMAND..."
  206. 1035 B$ = "R. HOOD & THE MERRY PERSONS."
  207. 1040  IF PR  THEN 1050
  208. 1045  VTAB 20: HTAB 1: PRINT "CHARACTERS ARE CHANGED...": GOTO 1055
  209. 1050  VTAB 20: HTAB 1: PRINT "Characters are changed..."
  210. 1055  VTAB 3: HTAB 10: PRINT "--->": POKE 1797,193
  211. 1060  FOR X = 1798 TO 1802: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3600: POKE X, PEEK(X) +128: NEXT X
  212. 1065  FOR X = 1 TO  LEN(B$): VTAB 7: HTAB 11 +X: PRINT  MID$ (B$,X,1): GOSUB 100: GOSUB 3600
  213. 1070  VTAB 3: HTAB 10: PRINT "TYPE [ ]";
  214. 1075  VTAB 3: HTAB 16: PRINT  MID$ (B$,X,1): NEXT X
  215. 1080  GOSUB 3145
  216. 1085  IF PR  THEN 1095
  217. 1090  VTAB 20: HTAB 1: PRINT "YOU DECIDE ";: INVERSE : PRINT "NOT";: NORMAL : PRINT " TO MAKE THAT CHANGE...": GOTO 1100
  218. 1095  VTAB 20: HTAB 1: PRINT "You decide NOT to make that change..."
  219. 1100  GOSUB 3145
  220. 1105  VTAB 3: HTAB 10: PRINT "RESTORE  "
  221. 1110  FOR X = 1 TO  LEN(A$): VTAB 7: HTAB 11 +X: PRINT  MID$ (A$,X,1): GOSUB 100: GOSUB 3600: IF X = 26  THEN  GOSUB 3605
  222. 1115  NEXT X
  223. 1120  POKE 1797,65
  224. 1125  IF PR  THEN 1135
  225. 1130  VTAB 20: HTAB 1: PRINT "YOU MAY CONTINUE TO EDIT OR PRESS       RETURN TO EXIT THIS MODE": GOTO 1140
  226. 1135  VTAB 20: HTAB 1: PRINT "You may continue to edit or press       RETURN to exit this mode"
  227. 1140  GOSUB 3145
  228. 1145  VTAB 3: HTAB 10: PRINT "DONE     "
  229. 1150  VTAB 20: HTAB 1: CALL  -958: POKE 1920,60
  230. 1155  GOSUB 3145
  231. 1160  REM =====CTL-S START=====
  232. 1165  GOSUB 90
  233. 1170 A$ = "WE THE PEOPLE OF THE UNITED STATES"
  234. 1175  VTAB 7: HTAB 1: PRINT "100  A$ = ";Q$;A$;Q$
  235. 1180  POKE 1797,65: VTAB 3: HTAB 33: PRINT "42"
  236. 1185  IF PR  THEN 1195
  237. 1190  VTAB 18: HTAB 1: PRINT "CTL-S RETURNS THE CURSOR TO THE ";Q$;: INVERSE : PRINT "START";: NORMAL : PRINT Q$: PRINT "OF THE LINE": GOTO 1200
  238. 1195  VTAB 18: HTAB 1: PRINT "CTL-S returns the cursor to the ";Q$;"START";Q$: PRINT "of the line"
  239. 1200  GOSUB 3145
  240. 1205  VTAB 18: HTAB 1: CALL  -958: PRINT "CTL-S COMMAND..."
  241. 1210  POKE 1797,193
  242. 1215 R =  INT(30 * RND(1))
  243. 1220  FOR X = 1831 -R TO 1792  STEP  -1: POKE X, PEEK(X) -128: GOSUB 100: GOSUB 3600: POKE X, PEEK(X) +128: NEXT X: POKE 1792,113
  244. 1225  VTAB 3: HTAB 10: PRINT "LINE BEG"
  245. 1230  GOSUB 3145
  246. 1235  VTAB 3: HTAB 10: PRINT "DONE    ": VTAB 19: HTAB 1: CALL  -958: POKE 1927,60
  247. 1240  GOSUB 3145
  248. 1245  IF FLAG = 1  THEN  HOME : RETURN 
  249. 1250  HOME : GOTO 3280
  250. 1255  REM IMMEDIATE MODE
  251. 1260 ME$ = "POWER UTILITIES": IF PR  THEN ME$ = "power utilities"
  252. 1265  HOME : FOR X = 3 TO 21: VTAB X: HTAB 11: PRINT ME$: GOSUB 120: GOSUB 3590: NEXT X
  253. 1270  FOR X = 21 TO 4  STEP  -1: VTAB X: HTAB 11: CALL  -868: GOSUB 120: GOSUB 3590: NEXT X
  254. 1275 ME$ = "LET'S USE POWER UTILITIES OF GALE": IF PR  THEN ME$ = "Let's use power utilities of GALE"
  255. 1280  HOME : VTAB 3: HTAB 1: PRINT ME$: PRINT 
  256. 1285  GOSUB 3175
  257. 1290  REM =====NORMAL EDIT=====
  258. 1295  HOME 
  259. 1300  VTAB 4: HTAB 3: PRINT "NORMAL EDITING"
  260. 1305  IF PR  THEN 1315
  261. 1310  VTAB 7: HTAB 2: PRINT "TO ENTER THE ";: INVERSE : PRINT "EDIT";: NORMAL : PRINT " MODE, MERELY PRESS    THE ";Q$;"/";Q$;" KEY -- AND THE LINE NUMBER TO   BE EDITED": GOTO 1320
  262. 1315  VTAB 7: HTAB 2: PRINT "To enter the EDIT mode, merely press    the ";Q$;"/";Q$;" key -- and the line number to   be edited"
  263. 1320  GOSUB 3175
  264. 1325  VTAB 22: HTAB 2: PRINT "/100"
  265. 1330  GOSUB 3175
  266. 1335  HOME : GOSUB 90
  267. 1340 A$ = "100  TEXT : HOME : CLEAR"
  268. 1345  VTAB 17: HTAB 1: PRINT "THIS IS THE MASTER EDITING SCREEN": PRINT 
  269. 1350 LK$ = "Many of its features will be explained  as we proceed with this demonstration"
  270. 1355  FOR X = 1 TO  LEN(A$): VTAB 7: HTAB X: PRINT  MID$ (A$,X,1): VTAB 3: HTAB 33: PRINT  INT(.75 *X): GOSUB 100: GOSUB 3600: NEXT X
  271. 1360  GOSUB 3145
  272. 1365  REM ===.A  AUTO NUMBER===
  273. 1370  HOME 
  274. 1375  VTAB 4: HTAB 3: PRINT "AUTO LINE NUMBER"
  275. 1380  POKE 1746,174: POKE 1747,1
  276. 1385  VTAB 22: HTAB 5: PRINT "STARTING LINE NUMBER"
  277. 1390  IF PR  THEN 1400
  278. 1395  VTAB 7: HTAB 2: PRINT "YOU CAN USE THIS COMMAND TO NUMBER      PROGRAM LINES ";: INVERSE : PRINT "AUTO";: NORMAL : PRINT "MATICALLY...": GOTO 1405
  279. 1400  VTAB 7: HTAB 2: PRINT "You can use this command to number      program lines AUTOmatically..."
  280. 1405  GOSUB 3175: IF PR  THEN 1415
  281. 1410  VTAB 7: HTAB 2: PRINT "IF A NUMBER IS ";: INVERSE : PRINT "NOT";: NORMAL : PRINT " SPECIFIED, NUMBERING WILL START WITH 10.  LET'S TRY ";Q$;"100";Q$: GOTO 1420
  282. 1415  VTAB 7: HTAB 2: PRINT "If a number is NOT specified, numbering will start with 10.  Let's try ";Q$;"100";Q$
  283. 1420  VTAB 22: HTAB 5: CALL  -868: PRINT "100,(INCREMENT)"
  284. 1425  GOSUB 3175
  285. 1430  IF PR  THEN 1440
  286. 1435  VTAB 7: HTAB 2: PRINT "THE ";: INVERSE : PRINT "INCREMENT";: NORMAL : PRINT " IS OPTIONAL.  IF ";: INVERSE : PRINT "NOT";: NORMAL : PRINT "     SPECIFIED, IT WILL BE 10.               LET'S TRY ";Q$;"5";Q$: GOTO 1445
  287. 1440  VTAB 7: HTAB 2: PRINT "The INCREMENT is optional.  If not      specified, it will be 10.               Let's try ";Q$;"5";Q$
  288. 1445  VTAB 22: HTAB 9: CALL  -868: PRINT "5"
  289. 1450  GOSUB 3175
  290. 1455  HOME 
  291. 1460  VTAB 7: HTAB 2:LK$ = "Pressing the arrow keys will produce    the next line number in sequence": GOSUB 3700: PRINT 
  292. 1465  FOR X = 1 TO 10: VTAB 9 +X: PRINT "]";95 +5 *X: GOSUB 120: GOSUB 3600: NEXT X
  293. 1470  GOSUB 3175
  294. 1475  REM ===.B  BLOAD====
  295. 1480  HOME 
  296. 1485  VTAB 4: HTAB 3: PRINT "BLOAD PARAMETERS"
  297. 1490  POKE 1746,174: POKE 1747,2
  298. 1495  GOSUB 3175
  299. 1500  VTAB 18: HTAB 1: CALL  -958
  300. 1505  POKE 1232,221: POKE 1233,174: POKE 1234,2
  301. 1510  VTAB 20: PRINT "A = $5000 (20480)"
  302. 1515  VTAB 22: PRINT "L = $1B62 (7010)"
  303. 1520  IF PR  THEN 1530
  304. 1525  VTAB 7: HTAB 2: PRINT "THE START (A) AND LENGTH (L) OF MOST    RECENTLY ";: INVERSE : PRINT "BLOADED";: NORMAL : PRINT " BINARY PROGRAM WILL BE DISPLAYED, IN HEX AND DECIMAL": GOTO 1535
  305. 1530  VTAB 7: HTAB 2: PRINT "The start (A) and length (L) of most    recently BLOADED binary program will be displayed, in hex and decimal"
  306. 1535  GOSUB 3175
  307. 1540  REM ====.C  CHANGE====
  308. 1545  HOME 
  309. 1550  VTAB 4: HTAB 3: PRINT "CHANGE"
  310. 1555  POKE 1746,174: POKE 1747,3
  311. 1560  GOSUB 3175
  312. 1565  VTAB 7: HTAB 2:LK$ = "The Change command will exchange any    letter or number, word or group of      characters for another": GOSUB 3700
  313. 1570  GOSUB 3175
  314. 1575 T =  INT(12 * RND(1)) +35
  315. 1580  VTAB 7: HTAB 2: CALL  -958:LK$ = "Any character between ASCII 33-47 may   be used as a " +Q$ +"delimiter" +Q$ +".": GOSUB 3700: PRINT : HTAB 2:LK$ = "We shall use " +Q$ + CHR$(T) +Q$ +" for this example.": GOSUB 3700
  316. 1585  GOSUB 3175
  317. 1590 A$ = "CAT":B$ = "DOG"
  318. 1595  VTAB 7: HTAB 2: CALL  -958:LK$ = "Let's Change " +Q$ +A$ +Q$ +" to " +Q$ +B$ +Q$: GOSUB 3700
  319. 1600  VTAB 9: HTAB 5:LK$ = "Delimiter is " + CHR$(40) + CHR$(T) + CHR$(41): GOSUB 3700
  320. 1605  POKE 1746,174: POKE 1747,3: POKE 1748,T +128
  321. 1610  VTAB 22: HTAB 6: PRINT A$ + CHR$(T) +B$ + CHR$(T)
  322. 1615  VTAB 24: HTAB 1: PRINT "CHECK CHANGES (Y/N)? ";: POKE 2021,96
  323. 1620  POKE 2021,25
  324. 1625  GOSUB 3175: POKE 1893,217
  325. 1630  VTAB 20: HTAB 2: CALL  -958: PRINT "100  PRINT ";Q$;"DOGCH THE TRAIN";Q$: POKE 1488,96: GOSUB 120: GOSUB 3615: POKE 1488,14: VTAB 20: HTAB 2: PRINT "100  PRINT ";Q$;"CATCH THE TRAIN";Q$
  326. 1635  CALL  -912: CALL  -912
  327. 1640  VTAB 20: HTAB 2: PRINT "255  A$ = ";Q$;B$;Q$: POKE 1488,96: GOSUB 120: GOSUB 3615: POKE 1488,25: CALL  -912: CALL  -912
  328. 1645  VTAB 20: HTAB 2: PRINT "888  PRINT CHR$(4) ";Q$;"DOGALOG";Q$: POKE 1488,96: GOSUB 120: GOSUB 3615: POKE 1488,14: VTAB 20: HTAB 22: PRINT A$: GOSUB 120: CALL  -912: CALL  -912: GOSUB 3145
  329. 1650  REM ==.D  DISK SPACE==
  330. 1655  HOME 
  331. 1660  VTAB 4: HTAB 3: PRINT "DISK FREE SPACE"
  332. 1665  POKE 1746,174: POKE 1747,4
  333. 1670  GOSUB 3175
  334. 1675  VTAB 18: HTAB 1: CALL  -958
  335. 1680  POKE 1872,221: POKE 1873,174: POKE 1874,4
  336. 1685  VTAB 23: HTAB 4: PRINT "ISK SECTORS FREE (D1) = 460"
  337. 1690  VTAB 7: HTAB 2:LK$ = "This command displays number of free    sectors on most recently accessed drive and indicates that drive number": GOSUB 3700
  338. 1695  GOSUB 3175
  339. 1700  REM ====.E  ESCAPE====
  340. 1705  HOME 
  341. 1710  VTAB 4: HTAB 3: PRINT "ESCAPE FUNCTION TABLE"
  342. 1715  POKE 1746,174: POKE 1747,5
  343. 1720  GOSUB 3175
  344. 1725  HOME 
  345. 1730  INVERSE : PRINT "        ESCAPE TABLE FUNCTIONS         ": NORMAL 
  346. 1735  PRINT : PRINT 
  347. 1740  PRINT "0    LIST": PRINT "1    CATALOGD1": PRINT "2    CATALOGD2": PRINT "*    CALL-151": PRINT "<    D$=CHR$(4)"
  348. 1745  PRINT ">    D$=CHR$(13)+CHR$(4)": PRINT "G    GOTO": PRINT "H    HTAB": PRINT "L    LIST": PRINT "S    SAVE": PRINT "T    TEXT": PRINT "V    VTAB"
  349. 1750  VTAB 22: HTAB 1:LK$ = "This is only a PARTIAL list of more than50 commands readily available": GOSUB 3700: IF PR = 0  THEN  VTAB 22: HTAB 16: INVERSE : PRINT "PARTIAL": NORMAL 
  350. 1755  GOSUB 3615: VTAB 22: HTAB 16: FLASH : PRINT "PARTIAL": NORMAL 
  351. 1760  SPEED= 50: VTAB 22: HTAB 32: PRINT "MORE THAN": SPEED= 255
  352. 1765  GOSUB 3175
  353. 1770  REM ==.H  HIDE==
  354. 1775  HOME 
  355. 1780  VTAB 4: HTAB 3: PRINT "HIDE COMMAND"
  356. 1785  POKE 1746,174: POKE 1747,8
  357. 1790  GOSUB 3175
  358. 1795  VTAB 7: HTAB 2:LK$ = "This command is used to HIDE (or HOLD)  a program in memory until it will be    required at a later time": GOSUB 3700: IF PR = 0  THEN  VTAB 7: HTAB 26: INVERSE : PRINT "HIDE (OR HOLD)";: NORMAL 
  359. 1800  GOSUB 3175
  360. 1805  HOME 
  361. 1810  FOR X = 1 TO 6: VTAB 3 +X: HTAB 2: PRINT B$(X +23): NEXT X
  362. 1815  GOSUB 3615
  363. 1820  POKE 1746,174: POKE 1747,8
  364. 1825  GOSUB 3175
  365. 1830  HOME : GOSUB 115
  366. 1835  POKE 1746,174: POKE 1747,8: VTAB 22: HTAB 7: PRINT "PROGRAM NOW HIDDEN!"
  367. 1840  GOSUB 3175: HOME 
  368. 1845  REM .L  LINEFIND
  369. 1850  HOME 
  370. 1855  VTAB 4: HTAB 3: PRINT "LINE FIND"
  371. 1860  POKE 1746,174: POKE 1747,12
  372. 1865  GOSUB 3175
  373. 1870  VTAB 7: HTAB 2:LK$ = "This command will locate the starting   and ending location (address) of the    line number specified": GOSUB 3700
  374. 1875  GOSUB 3175
  375. 1880  VTAB 16: HTAB 1: PRINT "FOR EXAMPLE...": PRINT 
  376. 1885  PRINT "100  TEXT : HOME : CLEAR"
  377. 1890  VTAB 22: HTAB 5: PRINT "100 = $0801 (2049) - $080A (2058)"
  378. 1895  GOSUB 3175
  379. 1900  REM ====.M  MANUAL====
  380. 1905  HOME 
  381. 1910  VTAB 4: HTAB 3: PRINT "MANUAL"
  382. 1915  POKE 1746,174: POKE 1747,13
  383. 1920  GOSUB 3175
  384. 1925  IF PR  THEN 1935
  385. 1930  VTAB 7: HTAB 2: PRINT "THIS COMMAND TURNS OFF THE ";: INVERSE : PRINT "AUTO";: NORMAL : PRINT " (.A)    ";: INVERSE : PRINT "LINE NUMBER";: NORMAL : PRINT " FEATURE": GOTO 1940
  386. 1935  VTAB 7: HTAB 2: PRINT "This command turns off the AUTO (.A)    LINE NUMBER feature"
  387. 1940  POKE 1827,1
  388. 1945  GOSUB 3175
  389. 1950  PRINT : CALL  -958: FOR X = 1 TO 5: VTAB 9 +X: PRINT "]";95 +5 *X;"   (AUTO)": GOSUB 120: GOSUB 3600: NEXT X
  390. 1955  POKE 1746,174: POKE 1747,13: GOSUB 3175
  391. 1960  FOR X = 6 TO 10:R =  INT(4 * RND(1)) +1: VTAB 9 +X: HTAB 1: PRINT "]";95 +5 *X +R;"   (MANUAL)": GOSUB 100: GOSUB 100: GOSUB 3600: NEXT X
  392. 1965  GOSUB 3175
  393. 1970  REM .P  POINTERS
  394. 1975  HOME 
  395. 1980  VTAB 4: HTAB 3: PRINT "POINTERS"
  396. 1985  POKE 1746,174: POKE 1747,16
  397. 1990  VTAB 7: HTAB 2:LK$ = "Simultaneously the following pointers   are displayed upon command:": GOSUB 3700
  398. 1995  GOSUB 2035: GOSUB 3145
  399. 2000  VTAB 7: HTAB 2: CALL  -958:LK$ = "Start of Program": GOSUB 3700:S = 1: GOSUB 2035: GOSUB 3145
  400. 2005  VTAB 7: HTAB 2: CALL  -958:LK$ = "Location just beyond end of program": GOSUB 3700:S = 2: GOSUB 2035: GOSUB 3145
  401. 2010  VTAB 7: HTAB 2: CALL  -958:LK$ = "Beginning of array space": GOSUB 3700:S = 3: GOSUB 2035: GOSUB 3145
  402. 2015  VTAB 7: HTAB 2: CALL  -958:LK$ = "Beginning of string storage": GOSUB 3700:S = 4: GOSUB 2035: GOSUB 3145
  403. 2020  VTAB 7: HTAB 2: CALL  -958:LK$ = "Highest program location available": GOSUB 3700:S = 5: GOSUB 2035: GOSUB 3145
  404. 2025  VTAB 7: HTAB 2: CALL  -958:LK$ = "Free bytes available for programming": GOSUB 3700:S = 6: GOSUB 2035: GOSUB 3145
  405. 2030  GOTO 2065
  406. 2035  FOR X = 1 TO 6: VTAB 8 +2 *X: HTAB 1
  407. 2040  IF S = X  THEN  INVERSE 
  408. 2045  PRINT B$(X +29): NORMAL : NEXT X:
  409. 2050  POKE 1746,174: POKE 1747,16
  410. 2055  GOSUB 120
  411. 2060  RETURN 
  412. 2065  REM .R  RENUMBER
  413. 2070  HOME 
  414. 2075  VTAB 4: HTAB 3: PRINT "RENUMBER"
  415. 2080  POKE 1746,174: POKE 1747,18
  416. 2085  GOSUB 3175
  417. 2090  VTAB 7: HTAB 2:LK$ = "Renumber all or any part of program in  any increment": GOSUB 3700
  418. 2095  GOSUB 3145
  419. 2100  FOR X = 1 TO 6: VTAB 10 +X: HTAB 2: PRINT B$(X +23): NEXT X
  420. 2105  VTAB 22: HTAB 5: PRINT "N (START NUMBER)": GOSUB 3620
  421. 2110  VTAB 22: HTAB 6: PRINT "100,I (INCREMENT)": GOSUB 3620
  422. 2115  VTAB 22: HTAB 11: PRINT "5,F (FIRST NUMBER)": GOSUB 3620
  423. 2120  VTAB 22: HTAB 14: PRINT "10,L (LAST NUMBER)": GOSUB 3620
  424. 2125  VTAB 22: HTAB 18: CALL  -868: PRINT "60": GOSUB 3145
  425. 2130  FOR X = 1 TO 6: VTAB 10 +X: HTAB 3: PRINT B$(X +23): VTAB 10 +X: HTAB 2: PRINT X *5 +95: GOSUB 120
  426. 2135  FOR Y = 1 TO 3: POKE 1770,170: GOSUB 3600: POKE 1770,160: POKE 1771,170: GOSUB 3600: POKE 1771,160: NEXT Y
  427. 2140  NEXT X
  428. 2145  GOSUB 3145
  429. 2150  REM ====.S  SEARCH====
  430. 2155  HOME 
  431. 2160  VTAB 4: HTAB 3: PRINT "SEARCH"
  432. 2165  POKE 1746,174: POKE 1747,19
  433. 2170  GOSUB 3175
  434. 2175  VTAB 7: HTAB 2:LK$ = "The Search command will locate any      letter or number, word or group of      characters in your program": GOSUB 3700
  435. 2180  GOSUB 3175
  436. 2185  VTAB 7: HTAB 2: CALL  -958:LK$ = "Any character between ASCII 33-47 may   be used as a " +Q$ +"delimiter" +Q$ +" to help find   the string...": GOSUB 3700
  437. 2190  POKE 1746,174: POKE 1747,19
  438. 2195  GOSUB 3175
  439. 2200  FOR X = 161 TO 175: POKE 1748,X: VTAB 22: HTAB 8: PRINT "<- ASCII #";X -128: GOSUB 120: GOSUB 3605: NEXT X
  440. 2205  VTAB 7: HTAB 2: CALL  -958:LK$ = "Let's use '/'": GOSUB 3700: POKE 1746,174: POKE 1747,19: POKE 1748,175
  441. 2210  GOSUB 3615: VTAB 7: HTAB 2: CALL  -868:LK$ = "...and look for " +Q$ +"POKE" +Q$: GOSUB 3700
  442. 2215  VTAB 22: HTAB 6: PRINT "POKE"
  443. 2220  GOSUB 3175
  444. 2225 A1$ = "100  POKE 1746,164":A2$ = "3464  PRINT " +Q$ +"POKER GAME AT MIKE'S" +Q$:A3$ = "4100  A$ = " +Q$ +"SLOW POKES USE BASIC" +Q$
  445. 2230  FOR X = 1 TO 3
  446. 2235  VTAB 18 -2 *X: HTAB 1: PRINT A1$: IF X = 1  THEN 2250
  447. 2240  VTAB 20 -2 *X: HTAB 1: CALL  -868: PRINT A2$: IF X = 2  THEN 2250
  448. 2245  VTAB 22 -2 *X: HTAB 1: CALL  -868: PRINT A3$: GOSUB 120
  449. 2250  GOSUB 3615
  450. 2255  NEXT X
  451. 2260  GOSUB 3145
  452. 2265 P$ = "POKE": INVERSE 
  453. 2270  SPEED= 50: VTAB 7: HTAB 19: PRINT P$: VTAB 12: HTAB 6: PRINT P$: VTAB 14: HTAB 14: PRINT P$: VTAB 16: HTAB 18: PRINT P$: NORMAL : SPEED= 255
  454. 2275  GOSUB 3145
  455. 2280  REM ====.U  UNHIDE====
  456. 2285  HOME 
  457. 2290  VTAB 4: HTAB 3: PRINT "UNHIDE COMMAND"
  458. 2295  POKE 1746,174: POKE 1747,21
  459. 2300  GOSUB 3175
  460. 2305  IF PR  THEN 2315
  461. 2310  VTAB 7: HTAB 2: PRINT "THIS COMMAND WILL ";: INVERSE : PRINT "UNHIDE";: NORMAL : PRINT " (RECOVER) A    PROGRAM IN MEMORY PREVIOUSLY PUT THERE  WITH ";: INVERSE : PRINT "HIDE";: NORMAL : PRINT " COMMAND": GOTO 2320
  462. 2315  VTAB 7: HTAB 2: PRINT "This command will UNHIDE (recover) a    program in memory previously put there  with HIDE command"
  463. 2320  GOSUB 3175
  464. 2325  SPEED= 200: FOR X = 1 TO 6: VTAB 11 +X: HTAB 2: PRINT B$(X +23): GOSUB 3600: NEXT X: SPEED= 255
  465. 2330  VTAB 22: HTAB 7: PRINT "PROGRAM UNHIDDEN!"
  466. 2335  GOSUB 3145
  467. 2340  REM =====.V  VARIABLE XREF=====
  468. 2345  HOME 
  469. 2350  VTAB 4: HTAB 3: PRINT "VARIABLE COMMAND"
  470. 2355  POKE 1746,174: POKE 1747,22
  471. 2360  GOSUB 3175
  472. 2365  VTAB 7: HTAB 2:LK$ = "This command produces an alphabetical   list of all program variables": GOSUB 3700
  473. 2370  GOSUB 3175
  474. 2375  HOME 
  475. 2380  FOR X = 1 TO 6: VTAB 3 +X: HTAB 2: PRINT B$(X +23): NEXT X
  476. 2385  HTAB 2: PRINT "70  A$ = ";Q$;"BYE!";Q$
  477. 2390  PRINT : PRINT : SPEED= 150
  478. 2395  PRINT  CHR$(91)"A$"; CHR$(93): PRINT "70": GOSUB 120: PRINT 
  479. 2400  PRINT  CHR$(91);"X"; CHR$(93): PRINT "20  30": GOSUB 120: PRINT 
  480. 2405  PRINT  CHR$(91);"Z"; CHR$(93): PRINT "40  60": GOSUB 120: SPEED= 255: GOSUB 3145
  481. 2410  REM ===.X EXHUME===
  482. 2415  HOME 
  483. 2420  VTAB 4: HTAB 3: PRINT "EXHUME COMMAND"
  484. 2425  POKE 1746,174: POKE 1747,24
  485. 2430  GOSUB 3175
  486. 2435  VTAB 7: HTAB 2:LK$ = "This command permits you to look into   memory to examine last line edited,     as it was before it was changed": GOSUB 3700
  487. 2440  GOSUB 3175
  488. 2445  FOR X = 1 TO 6: VTAB 10 +X: HTAB 2: PRINT B$(X +23): NEXT X
  489. 2450  GOSUB 3610: VTAB 12: HTAB 2: INVERSE : PRINT "20  FOR X = 1 TO 50 ": NORMAL 
  490. 2455  GOSUB 3145
  491. 2460  VTAB 20: HTAB 1: PRINT B$(25)
  492. 2465  GOSUB 3145
  493. 2470  REM ====.+  APPEND====
  494. 2475  HOME 
  495. 2480  VTAB 4: HTAB 3: PRINT "APPEND COMMAND"
  496. 2485  POKE 1746,174: POKE 1747,43
  497. 2490  GOSUB 3175
  498. 2495  VTAB 7: HTAB 2:LK$ = "This command attaches a " +Q$ +"hidden" +Q$ +"        program to the end of the program now   in  memory -- appending it": GOSUB 3700
  499. 2500  GOSUB 3175
  500. 2505  FOR X = 1 TO 6: VTAB 10 +X: HTAB 2: PRINT B$(X +23): NEXT X
  501. 2510  GOSUB 3145
  502. 2515  VTAB 17: HTAB 2: PRINT "70  FOR P = 1024 TO 2039"
  503. 2520  HTAB 2: PRINT "80  POKE P,32": GOSUB 120
  504. 2530  HTAB 2: PRINT "90  NEXT P": GOSUB 120
  505. 2535  VTAB 22: HTAB 6: PRINT "APPEND COMPLETED!": GOSUB 115
  506. 2540  GOSUB 3145
  507. 2545  REM ====#  DEC/HEX====
  508. 2550  HOME 
  509. 2555  VTAB 4: HTAB 3: PRINT "DEC/HEX"
  510. 2560  POKE 1746,163
  511. 2565  GOSUB 3175
  512. 2570  VTAB 7: HTAB 2:LK$ = "This command provides hex equivalent    for a decimal number...instantly": GOSUB 3700: IF PR = 0  THEN  VTAB 8: HTAB 25: INVERSE : PRINT "INSTANTLY";: NORMAL 
  513. 2575 R =  INT(5 * RND(1)) +1
  514. 2580  IF R = 1  THEN A$ = "3464 = $0D88"
  515. 2585  IF R = 2  THEN A$ = "255 = $00FF"
  516. 2590  IF R = 3  THEN A$ = "13 = $000D"
  517. 2595  IF R = 4  THEN A$ = "1983 = $07BF"
  518. 2600  IF R = 5  THEN A$ = "20480 = $5000"
  519. 2605  VTAB 22: HTAB 4: PRINT A$
  520. 2610  GOSUB 3175
  521. 2615  REM ====$  HEX/DEC====
  522. 2620  HOME 
  523. 2625  VTAB 4: HTAB 3: PRINT "HEX/DEC"
  524. 2630  POKE 1746,164
  525. 2635  GOSUB 3175
  526. 2640  VTAB 7: HTAB 2:LK$ = "This command provides decimal           equivalent for a hex number...INSTANTLY": GOSUB 3700: IF PR = 0  THEN  VTAB 8: HTAB 32: FLASH : PRINT "INSTANTLY";: NORMAL 
  527. 2645  GOSUB 3175
  528. 2650 R = R +1: IF R >5  THEN R = 1
  529. 2655  IF R = 1  THEN A$ = "0D88 = 3464"
  530. 2660  IF R = 2  THEN A$ = "FF = 255"
  531. 2665  IF R = 3  THEN A$ = "D = 13"
  532. 2670  IF R = 4  THEN A$ = "07BF = 1983"
  533. 2675  IF R = 5  THEN A$ = "5000 = 20480"
  534. 2680  VTAB 22: HTAB 4: PRINT A$
  535. 2685  GOSUB 3175
  536. 2690  REM 
  537. 2695  IF FLAG = 1  THEN  HOME : RETURN 
  538. 2700  HOME : GOTO 3280
  539. 2705  REM ====ESCAPE FUNCTIONS====
  540. 2710  HOME 
  541. 2715 ME$ = "FAST TYPE COMMAND": IF PR  THEN ME$ = "fast type command"
  542. 2720  FOR X = 3 TO 21: VTAB X: HTAB 11: PRINT ME$: GOSUB 120: GOSUB 3590: NEXT X
  543. 2725  FOR X = 21 TO 4  STEP  -1: VTAB X: HTAB 11: CALL  -868: GOSUB 120: GOSUB 3590: NEXT X
  544. 2730  HOME 
  545. 2735  INVERSE : VTAB 1: PRINT L$: VTAB 5: PRINT L$: NORMAL 
  546. 2740 E$ = "This is number    of more than FIFTY    " +Q$ +"shorthand commands." +Q$ +" It permits        you to perform a specific programming   step, by merely pressing" + CHR$(13) + CHR$(13) +"ESCAPE and then "
  547. 2745  IF PR = 0  THEN E$ = "THIS IS NUMBER    OF MORE THAN FIFTY   " +Q$ +"SHORTHAND COMMANDS." +Q$ +" IT PERMITS        YOU TO PERFORM A SPECIFIC PROGRAMMING   STEP, BY MERELY PRESSING" + CHR$(13) + CHR$(13) +"ESCAPE AND THEN "
  548. 2750  VTAB 9: HTAB 1: PRINT E$
  549. 2755  REM   LIST-ESC/L
  550. 2760  VTAB 3: HTAB 19: PRINT "LIST"
  551. 2765  VTAB 14: HTAB 17: PRINT "L"
  552. 2770  VTAB 9: HTAB 16: PRINT "37"
  553. 2775  GOSUB 3145
  554. 2780  VTAB 7: CALL  -958
  555. 2785  SPEED= 200
  556. 2790  VTAB 9: HTAB 1: PRINT "100  REM SCREEN DEMONSTRATION OF": PRINT 
  557. 2795  PRINT "200  REM"
  558. 2800  PRINT "300  REM         ";Q$;"GALE";Q$: PRINT 
  559. 2805  PRINT "400  REM   BY SANDY M. MOSSBERG"
  560. 2810  PRINT "500  REM"
  561. 2815  IF PR = 1  THEN  PRINT "600  REM": PRINT : PRINT "WRITTEN BY............": PRINT "....... PAUL RAYMER": PRINT "......... LAS VEGAS NV": GOTO 2825
  562. 2820  PRINT "600  REM": PRINT : PRINT "WRITTEN BY": PRINT " PAUL RAYMER": PRINT " LAS VEGAS NV"
  563. 2825  SPEED= 255
  564. 2830  GOSUB 3145
  565. 2835  REM CATALOG-ESC/1
  566. 2840  VTAB 3: HTAB 17: PRINT "CATALOG"
  567. 2845  VTAB 9: HTAB 1: CALL  -958: PRINT E$
  568. 2850  VTAB 14: HTAB 17: PRINT "1"
  569. 2855  VTAB 9: HTAB 16: PRINT "21"
  570. 2860  GOSUB 3145
  571. 2865  PRINT : PRINT D$;"CATALOG"
  572. 2885  GOSUB 3145
  573. 2890  REM SAVE-ESC/S
  574. 2895  HOME 
  575. 2900  INVERSE : VTAB 1: HTAB 1: PRINT L$: VTAB 5: HTAB 1: PRINT L$: NORMAL 
  576. 2905  VTAB 3: HTAB 19: PRINT "SAVE"
  577. 2910  VTAB 9: HTAB 1: PRINT E$
  578. 2915  VTAB 14: HTAB 17: PRINT "S"
  579. 2920  VTAB 9: HTAB 16: PRINT "44"
  580. 2925  GOSUB 3145
  581. 2930  VTAB 20: HTAB 1: PRINT "] SAVE DEMO TEST"
  582. 2940  IF PR = 1  THEN  FOR P = 1 TO 15: POKE 1489,32: GOSUB 3595: POKE 1489,160: GOSUB 3590: NEXT P: GOTO 2950
  583. 2945  FOR P = 1 TO 15: POKE 1489,255: GOSUB 3595: POKE 1489,160: GOSUB 3590: NEXT P
  584. 2950  GOSUB 3145: HOME : INVERSE : PRINT L$: VTAB 5: PRINT L$: NORMAL : VTAB 3: HTAB 19: PRINT "HOME"
  585. 2960  GOSUB 3145
  586. 2965  REM HOME-ESC/Q
  587. 2970  VTAB 3: HTAB 19: PRINT "HOME"
  588. 2975  VTAB 9: HTAB 1: PRINT E$
  589. 2980  VTAB 9: HTAB 16: PRINT "42": VTAB 14: HTAB 17: PRINT "Q"
  590. 2985  GOSUB 3145
  591. 2990  HOME : GOSUB 3610: GOSUB 3145
  592. 2995  REM RETURN-ESC R
  593. 3000  INVERSE : VTAB 1: HTAB 1: PRINT L$: VTAB 5: HTAB 1: PRINT L$: NORMAL 
  594. 3005  VTAB 3: HTAB 18: PRINT "RETURN"
  595. 3010  VTAB 9: HTAB 1: PRINT E$
  596. 3015  VTAB 14: HTAB 17: PRINT "R"
  597. 3020  VTAB 9: HTAB 16: PRINT "43"
  598. 3025  GOSUB 3145
  599. 3030 R$ = "RETURN"
  600. 3035  REM VTAB 7: HTAB 1: CALL  - 958
  601. 3040  FOR X = 1 TO 3
  602. 3045 R =  INT(26 * RND(1)) +1
  603. 3050  SPEED= 50: VTAB X +15: HTAB 3: PRINT 10 *X;"  ";"IF A = ";R;" THEN B$ = ";Q$; CHR$(R +64);Q$;":";: SPEED= 255: PRINT R$
  604. 3055  NEXT X
  605. 3060  GOSUB 3145
  606. 3065  REM BLOAD-ESC/CTL-B
  607. 3070  INVERSE : VTAB 1: HTAB 1: PRINT L$: VTAB 5: HTAB 1: PRINT L$: NORMAL 
  608. 3075  VTAB 3: HTAB 18: PRINT "BLOAD "
  609. 3080  VTAB 9: HTAB 1: CALL  -958: PRINT E$
  610. 3085  VTAB 14: HTAB 17: PRINT "CTL-B"
  611. 3090  VTAB 9: HTAB 16: PRINT "2"
  612. 3095  GOSUB 3145
  613. 3100  VTAB 20: HTAB 2: PRINT "] BLOAD GALE"
  614. 3105  PRINT : PRINT D$"VERIFY GALE.DEMO"
  615. 3108  POKE 216,0: VTAB 1: HTAB 1: INVERSE : FOR I = 1 TO 176: PRINT "GALE ";: NEXT I: NORMAL 
  616. 3110  GOSUB 3615
  617. 3115  GOSUB 3145
  618. 3120  FOR X = 1 TO 6: VTAB X: CALL  -868: NEXT X
  619. 3125  VTAB 1: HTAB 1: PRINT L$: VTAB 5: HTAB 1: PRINT L$: VTAB 3: HTAB 18: PRINT "AND MORE!"
  620. 3130  GOSUB 3145
  621. 3135  IF FLAG = 1  THEN  RETURN 
  622. 3140  HOME : GOTO 3280
  623. 3145  IF FLAG = 1  THEN  GOSUB 3620: GOTO 3160
  624. 3150  IF PR = 0  THEN  POKE 2000,255: VTAB 24: HTAB 2: PRINT " PLEASE PRESS SPACE BAR TO CONTINUE ";: GET AN$: GOTO 3160
  625. 3155  POKE 2000,255: VTAB 24: HTAB 2: PRINT " Please press space bar to continue ";: GET AN$
  626. 3160  IF  PEEK( -16384) = 27  THEN  HOME : GOTO 3280
  627. 3165  POKE  -16368,0
  628. 3170  VTAB 24: HTAB 1: CALL  -868: RETURN 
  629. 3175  IF FLAG = 1  THEN  GOSUB 3620: GOTO 3200
  630. 3180  IF PR  THEN 3190
  631. 3185  VTAB 15: HTAB 19: PRINT "PLEASE PRESS SPACE BAR": VTAB 15: HTAB 18: GET AN$: GOTO 3200
  632. 3190  IF PR = 0  THEN  VTAB 15: HTAB 19: PRINT "PLEASE PRESS SPACE BAR": VTAB 15: HTAB 18: GET AN$: GOTO 3200
  633. 3195  VTAB 15: HTAB 19: PRINT "Please press space bar": VTAB 15: HTAB 18: GET AN$
  634. 3200  IF  PEEK( -16384) = 27  THEN  HOME : GOTO 3280
  635. 3205  POKE  -16368,0
  636. 3210  VTAB 15: HTAB 13: CALL  -868: RETURN 
  637. 3215  REM =====INTRO=====
  638. 3220  DIM B$(55)
  639. 3225  FOR I = 1 TO 55: READ B$(I): NEXT I
  640. 3230 Q$ =  CHR$(34)
  641. 3235  VTAB 5
  642. 3240  IF PR  THEN 3250
  643. 3245  PRINT "PRESENTING GALE...": PRINT : GOTO 3255
  644. 3250  PRINT "PRESENTING Gale...": PRINT 
  645. 3255  PRINT "MAKES WRITING PROGRAMS A BREEZE!": PRINT : PRINT 
  646. 3260  GOSUB 3145
  647. 3265 FLAG = 0: HOME 
  648. 3270  INVERSE : FOR X = 2 TO 4: VTAB X: HTAB 1: PRINT  SPC( 29): NEXT X
  649. 3275  VTAB 3: HTAB 2: PRINT "WHAT DOES ";Q$;"GALE";Q$;" DO? ": GOSUB 3605: FLASH : VTAB 3: HTAB 19: PRINT "DO": NORMAL 
  650. 3280  VTAB 6
  651. 3285  FOR X = 1 TO 7
  652. 3290  IF PR = 0  THEN  HTAB 2: PRINT B$(X +48): PRINT : GOTO 3300
  653. 3295  HTAB 2: PRINT B$(X): PRINT 
  654. 3300  NEXT X
  655. 3305  GOSUB 3615
  656. 3310  SPEED= SP: VTAB 3: HTAB 1: PRINT " WHAT WILL ";Q$;"GALE";Q$;" DO FOR ME? ": SPEED= 255:SP = 255
  657. 3315  IF PR  THEN 3325
  658. 3320  VTAB 20: HTAB 5: PRINT "SELECT BY NUMBER ";: GOTO 3330
  659. 3325  VTAB 20: HTAB 5: PRINT "Select by number ";
  660. 3330  POKE  -16368,0: GET AN$: PRINT :AN =  VAL(AN$): IF AN <1  OR AN >7  THEN 3315
  661. 3335  ON AN GOTO 3355,2705,1255,3345,3440,3625,3735
  662. 3345 FLAG = 1: GOSUB 1255: GOSUB 2705: GOSUB 3355:FLAG = 0: GOTO 3440
  663. 3350  REM =EDITING=
  664. 3355  HOME 
  665. 3360 ME$ = "EDITING": IF PR  THEN ME$ = "editing"
  666. 3365  FOR X = 3 TO 21: VTAB X: HTAB 11: PRINT ME$: GOSUB 120: GOSUB 3590: NEXT X
  667. 3370  FOR X = 21 TO 4  STEP  -1: VTAB X: HTAB 11: CALL  -868: GOSUB 120: GOSUB 3590: NEXT X
  668. 3375  IF PR = 0  THEN  HOME : VTAB 3: HTAB 1: PRINT "LET'S TRY EDITING WITH GALE...": PRINT : PRINT : GOSUB 3145: GOTO 260
  669. 3380  HOME : VTAB 3: HTAB 1: PRINT "Let's try editing with GALE...": PRINT : PRINT 
  670. 3385  GOSUB 3145: GOTO 145
  671. 3390  DATA  "1) EASY EDIT (Programmer's Friend)","2) STENO (Fast type)","3) POWER UTILITIES","4) AUTOMATIC DEMO","5) BONUS Features","6) Change demo speed","7) End demonstration"
  672. 3395  DATA ,,,,,,,,,
  673. 3400  DATA ,,,,,,10  HOME,20  FOR X = 1 TO 100,"30  PRINT X : NEXT X"
  674. 3405  DATA  40  FOR Z = 1 TO 3,50  PRINT CHR$ (7),60  NEXT Z
  675. 3410  DATA  "PROGRAM: $0801 (2049)","LOMEM:   $4527 (17703)","ARRAY:   $4551 (17745)","STRING:  $92C8 (37576)","HIMEM:   $9600 (38400)","FREE:    $4D76 (19830)"
  676. 3415  DATA H,S,O,J,E,I,N,A,H,P,E,T,S
  677. 3420  DATA  "1) EASY EDIT (PROGRAMMER'S FRIEND)","2) STENO (FAST TYPE)","3) POWER UTILITIES","4) AUTOMATIC DEMO","5) BONUS FEATURES","6) CHANGE DEMO SPEED","7) END DEMONSTRATION"
  678. 3425  DATA  "?SYNTAX ERROR - PROBLEMS - TROUBLES -   WORDS SPELED WRONG AND OTHER USUAL      PROGRAMMING PROBLEMS!!!!!!!!!!!!!!!"
  679. 3430  DATA  IF YOU HAVE THESE    PROBLEMS GALE CAN REALLY    HELP!
  680. 3435  REM =====BONUS=====
  681. 3440  HOME 
  682. 3445  SPEED= 175
  683. 3450 LK$ = "Super Neat extras...": GOSUB 3700: PRINT 
  684. 3455  PRINT : PRINT 
  685. 3460 LK$ = "You can enter EDIT at any time by       pressing CTL-G        ===": GOSUB 3700: PRINT 
  686. 3465  PRINT 
  687. 3470 LK$ = "Listing can be ended at any time by     pressing return key": GOSUB 3700: PRINT 
  688. 3475  PRINT :LK$ = "If a line is " +Q$ +"full" +Q$ +"...GALE may allow    you to squeeze in a few extra letters!": GOSUB 3700: PRINT 
  689. 3480  PRINT :LK$ = "The use of programs which use the " +Q$ +"&" +Q$ +"   command is still possible with GALE": GOSUB 3700: PRINT 
  690. 3485  PRINT :LK$ = "Escape functions may be defined by you.": GOSUB 3700: PRINT 
  691. 3490  PRINT :LK$ = "An " +Q$ +"extra" +Q$ +" set of INSTANT (ESC) commandsis included with GALE": GOSUB 3700: PRINT 
  692. 3495  PRINT :LK$ = "Lower case available for PRINT and      REMARKS if you can print lower case": GOSUB 3700: PRINT 
  693. 3500  VTAB 1: HTAB 1: INVERSE : PRINT "IF YOU HAVE AN APPLE //E MOVE THE CURSOR ";: NORMAL : PRINT " FOUR ";: INVERSE : PRINT " DIFFERENT WAYS WITH ARROW KEYS!                                         ": NORMAL 
  694. 3505  GOSUB 3615
  695. 3510  VTAB 22: HTAB 1
  696. 3515  SPEED= 200
  697. 3520  GOSUB 3620
  698. 3525  PRINT : PRINT ">AND MORE ";
  699. 3530  GOSUB 3620
  700. 3535  FOR X = 1 TO 95: PRINT "MORE      ";: NEXT X
  701. 3540  GOTO 3565
  702. 3545  FOR X = 1024 TO 2039
  703. 3550  IF  PEEK(X) = 160  THEN 3560
  704. 3555  IF  PEEK(X) < >197  THEN  POKE X,32
  705. 3560  NEXT X
  706. 3565  VTAB 1: HTAB 1: FOR X = 1 TO 92: PRINT "     GALE ";: NEXT X
  707. 3570  SPEED= 255
  708. 3575  GOSUB 3615
  709. 3580  HOME : GOTO 3280
  710. 3585  REM =====DELAY LOOPS=====
  711. 3590  FOR Z = 1 TO 5 *ZZ: NEXT Z: RETURN 
  712. 3595  FOR Z = 1 TO 12 *ZZ: NEXT Z: RETURN 
  713. 3600  FOR Z = 1 TO 25 *ZZ: NEXT Z: RETURN 
  714. 3605  FOR Z = 1 TO 50 *ZZ: NEXT Z: RETURN 
  715. 3610  FOR Z = 1 TO 100 *ZZ: NEXT Z: RETURN 
  716. 3615  FOR Z = 1 TO 200 *ZZ: NEXT Z: RETURN 
  717. 3620  FOR Z = 1 TO 300 *ZZ: NEXT Z: RETURN 
  718. 3625  HOME : VTAB 5:LK$ = "You may select speed of demonstration   at any time by returning to the main": GOSUB 3700
  719. 3630  PRINT :LK$ = "menu and selecting this option (#6)": GOSUB 3700: PRINT : PRINT 
  720. 3635  IF TZ = 1  THEN  INVERSE 
  721. 3640  FOR X = 1 TO 9: VTAB 10: HTAB 9 +(2 *X): PRINT X: GOSUB 3590: NEXT X
  722. 3645  NORMAL :TZ = TZ +1: IF TZ >1  THEN TZ = 0
  723. 3650  PRINT :LK$ = " Select speed of display by number...": GOSUB 3700: PRINT 
  724. 3655  IF PR  THEN 3665
  725. 3660  VTAB 2: HTAB 11: PRINT "(PRESENT SPEED=";10 -ZZ;")":ZO = ZZ: GOTO 3670
  726. 3665  VTAB 2: HTAB 11: PRINT "(Present Speed=";10 -ZZ;")":ZO = ZZ
  727. 3670  VTAB 20: HTAB 5: PRINT "HIGHER NUMBER => FASTER SPEED"
  728. 3675 KP =  PEEK( -16384)
  729. 3680  IF KP >128  THEN 3690
  730. 3685  POKE  -16368,0: GOTO 3635
  731. 3690  POKE  -16368,0:ZZ = 10 -(KP -176): IF ZZ <1  OR ZZ >9  THEN ZZ = ZO
  732. 3695  HOME : GOTO 3265
  733. 3700  REM LOWER CASE CONVERT
  734. 3705  IF PR  THEN  PRINT LK$;: RETURN 
  735. 3710  FOR X = 1 TO  LEN(LK$)
  736. 3715  IF  ASC( MID$ (LK$,X,1)) >90  THEN  PRINT  CHR$( ASC( MID$ (LK$,X,1)) -32);: GOTO 3725
  737. 3720  PRINT  MID$ (LK$,X,1);
  738. 3725  NEXT X
  739. 3730  RETURN 
  740. 3735  SPEED= 255: HOME :LK$ = "To order ": GOSUB 3700: INVERSE : PRINT "GALE";: NORMAL :LK$ = ", send $49.95 (U.S. funds, postage paid) to": GOSUB 3700: PRINT : PRINT 
  741. 3740  PRINT : HTAB 10: PRINT "MICROSPARC, INC.                        45 WINTHROP ST.                         CONCORD, MA   01742"
  742. 3745  PRINT :LK$ = "Or call (617) 371-1660.": GOSUB 3700
  743. 3750  PRINT : PRINT : PRINT :LK$ = "The ": GOSUB 3700: INVERSE : PRINT "GALE";: NORMAL :LK$ = " disk includes DOS 3.3 versions (for the Apple 2, 2 Plus, and //e)": GOSUB 3700
  744. 3755  PRINT : PRINT : PRINT :LK$ = "and ProDOS versions                     (for the //e and //c, 40- and 80-column)": GOSUB 3700: VTAB 23: END